﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Documentos_edFiscalImpIRRFSal : PageBase
{
    protected const int idTipo1 = 6;
    protected const string tipoDocumento = "IRRF_Sal";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CarregaComboAno(rcbAno);
            OcultaCampos(true);
            hdId.Value = tipoDocumento;

            if (Session["WorkFlow"] != null)
                Session["WorkFlow"] = null;
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        Pesquisa();
        RadGrid1.DataBind();
        OcultaCampos(false);
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        foreach (RadComboBoxItem item in rcbAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            chk.Checked = true;
        }
        rcbAno.SelectedIndex = 0;

        OcultaCampos(true);
    }
    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
            editLink.Attributes["href"] = "#";
            editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdDocumentoOrganizacao"], e.Item.ItemIndex);
        }
    }
    protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        Pesquisa();
    }
    protected void RadGrid1_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            OrganizacaoDocumento _organDocumento = new OrganizacaoDocumento();

            GridEditableItem editedItem = e.Item as GridEditableItem;

            int _idDocumentoOrgan = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["IdDocumentoOrganizacao"].ToString());
            _organDocumento.IdDocumentoOrganizacao = _idDocumentoOrgan;
            _organDocumento.Excluir();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        CarregaComboAno(rcbAno);
        Pesquisa();
        RadGrid1.DataBind();
    }
    #endregion

    #region Metodos
    private void Pesquisa()
    {
        RadGrid1.DataSource = CarregaDocumentos(rcbAno.SelectedValue.ToString());
    }
    public List<OrganizacaoDocumento> CarregaDocumentos(string ano)
    {
        OrganizacaoDocumento documento = new OrganizacaoDocumento();
        List<OrganizacaoDocumento> listDocumento = new List<OrganizacaoDocumento>();

        List<int> listAnos = new List<int>();
        foreach (RadComboBoxItem item in rcbAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            if (chk.Checked)
            {
                listAnos.Add(int.Parse(item.Value));
            }
        }

        int[] _anos = new int[listAnos.Count];
        for (int i = 0; i < listAnos.Count; i++)
        {
            _anos[i] = listAnos[i];
        }

        if (_anos.Length != 0)
            listDocumento = documento.SelectPor(IdPrestador, idTipo1, _anos);
        else
            listDocumento = documento.SelectPor(IdPrestador, idTipo1);

        return listDocumento;
    }
    protected void CarregaComboAno(RadComboBox combo)
    {
        combo.Items.Clear();

        OrganizacaoDocumento documento = new OrganizacaoDocumento();
        List<OrganizacaoDocumento> listDocumento = documento.CarregaAno(IdPrestador, idTipo1);

        combo.DataTextField = "Ano";
        combo.DataValueField = "Ano";
        combo.DataSource = listDocumento;
        combo.DataBind();

        // tratamento para situação de selecionar o ano conforme o link do e-mail para os respectivo documento
        if (Session["Workflow"] != null)
        {
            RadComboBoxItem itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
            if (itemAno == null)
            {
                listDocumento.Add(new OrganizacaoDocumento() { Ano = Request.QueryString["AnoWF"].ToString() });

                combo.DataSource = listDocumento;
                combo.DataBind();

                itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
                combo.SelectedIndex = itemAno.Index;
            }

            foreach (RadComboBoxItem item in combo.Items)
            {
                if (item.Index != itemAno.Index)
                {
                    CheckBox chk = (CheckBox)item.FindControl("chk1");
                    chk.Checked = false;
                }
            }
            combo.SelectedIndex = itemAno.Index;
        }
    }
    protected void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }
    #endregion
}
